package com.stars.util.tree;

import com.stars.base.constants.CommonNumberConstants;
import com.stars.base.entity.TreeNode;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

/**
 * @author : Rocks
 * @version : 1.0
 * @date : 2022/10/28 17:09
 * @description : 树节点操作工具类
 */
public class TreeNodeUtil {

    /**
     * 生成树结构
     * @author : Rocks
     * @date :  2022/10/28 19:59
     * @param root 根节点
     * @param items 树节点元素集合
     * @return TreeNode
     */
    public static TreeNode merge(TreeNode root, List<TreeNode> items){

        if (root == null) {
            root = new TreeNode(CommonNumberConstants.ZERO_STR, "不存在根节点",CommonNumberConstants.MINUS_ONE_STR);
            return root;
        }

        Map<String, TreeNode> map = new HashMap<>();
        map.put(root.getValue(),root);
        for(TreeNode node : items){
            map.put(node.getValue(),node);
        }

        for(TreeNode node : items){
            if(map.containsKey(node.getpId())){
                map.get(node.getpId()).getChildren().add(node);
            }
        }

        return map.get(root.getValue());
    }


}
